/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package compumundohipermegared;

import ConstantesProcotolo.Protocolo;
import clasesJXTA.AdministradorJXTA;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import net.jxta.socket.JxtaMulticastSocket;
import net.jxta.socket.JxtaServerSocket;

/**
 *
 * @author Arkan
 */
public class EnviadorMensajesGuardar 
{
    private AdministradorJXTA administradorJXTA;
    
    private Compumundohipermegared compumundohipermegared;
    
    JxtaServerSocket jxtaServerSocket;
    
    JxtaMulticastSocket ms;
    
    public EnviadorMensajesGuardar( Compumundohipermegared compumundohipermegared, AdministradorJXTA administradorJXTA ) throws IOException
    {
        this.compumundohipermegared = compumundohipermegared;
        this.administradorJXTA = administradorJXTA;
       // jxtaServerSocket = new JxtaServerSocket( administradorJXTA.getNetPeerGroup(), administradorJXTA.getPipeAdv( ) );
        //jxtaServerSocket.setSoTimeout( 0 );      
        ms = new JxtaMulticastSocket(administradorJXTA.getNetPeerGroup( ), administradorJXTA.getPropagatePipeAdv( ) );
        InetAddress group = InetAddress.getByName(Compumundohipermegared.DIRECCION_MULTICAST_GUARDAR);
        ms.joinGroup(group);
        ms.setBroadcast(true);
        ms.setSoTimeout(0);

        
    }
    
    public void guardarEstadosDelSistema( String nombreArchivo )
    {
        try
        {          
            System.out.println("voy a avisarles que guarden en el archivo " + nombreArchivo);
            String mensaje = Protocolo.GUARDEN.toString( )+":"+nombreArchivo;
            DatagramPacket dp = new DatagramPacket( mensaje.getBytes( ), mensaje.length( ) );
             for (int i = 0; i < Compumundohipermegared.VECES_REPETIR_MENSAJES; i++) {
                ms.send( dp );
            }
            
            
        }
        catch( IOException e )
        {
            System.out.println("No pudo guardar el estado");
            e.printStackTrace();
        }
    }

    void cargarEstadosDelSistema(String nombreArchivo) {
        try
        {          
            System.out.println("voy a avisarles que carguen en el archivo " + nombreArchivo);
            String mensaje = Protocolo.CARGUEN_ESTADO.toString( )+":"+nombreArchivo;
            DatagramPacket dp = new DatagramPacket( mensaje.getBytes( ), mensaje.length( ) );
             for (int i = 0; i < Compumundohipermegared.VECES_REPETIR_MENSAJES; i++) {
                ms.send( dp );
            }
            
            
        }
        catch( IOException e )
        {
            System.out.println("No pudo cargar el estado");
            e.printStackTrace();
        }
    }
}

